home *** CD-ROM | disk | FTP | other *** search
/ Entrepreneur Magazine's …nt Businesses for the 90s / Entrepreneur Magazine's Top Low-Investment Businesses for the 90s.iso / startup.mst < prev    next >
Encoding:
Text File  |  1995-09-12  |  16.1 KB  |  494 lines

  1. '**************************************************************************
  2. '*
  3. '* TITLE.MST - Viewer Runtime Setup Script
  4. '*
  5. '* CUSTOMIZING TITLE.MST
  6. '*
  7. '* For a simple Setup routine, you just need to assign values to the 
  8. '* series of variables following the heading "Setup Variables". This
  9. '* script also provides for the following more-advanced options, which
  10. '* are supported by subroutines located later in this script:
  11. '*
  12. '* Option                                         See Subroutine
  13. '* ------------------------------------------     ---------------------
  14. '* Install more than one .MVB file                ModifyViewerIni
  15. '* Install Help title                             ModifyViewerIni
  16. '* Install custom DLLs                            ModifyViewerIni
  17. '* Install multiple Program Manager items         ModifyProgramManager
  18. '* Display a custom icon with the ProgMan item    ModifyProgramManager
  19. '* Install custom fonts                           RegisterCustomFonts
  20. '* Install Video for Windows runtime files        RegisterDrivers
  21. '*
  22. '* Each customization note starts with the heading CUSTOMIZATION.
  23. '*
  24. '**************************************************************************
  25.     
  26.     '' Global variables
  27.  
  28.     GLOBAL TitleShortName$
  29.     GLOBAL TitleLongName$
  30.     GLOBAL CATMVB$
  31.     GLOBAL CISEXE$
  32.     GLOBAL MVB$
  33.     GLOBAL PromptForPath%
  34.     GLOBAL DefaultPath$
  35.     GLOBAL ProgManGroup$
  36.     GLOBAL ProgManItem$
  37.     GLOBAL CatProgManItem$
  38.     GLOBAL CISProgManItem$
  39.     
  40.     '' ****************************************************************
  41.     '' ** Setup Variables
  42.     '' ****************************************************************
  43.  
  44.     '' Set the following string to a short form of the title name
  45.     '' (for example, "Gallery")
  46.     
  47.     TitleShortName$ = "Top Low Investment Businesses"
  48.     
  49.     '' Set the following string to a long form of the title name
  50.     '' (for example, "Viewer 2.0 Gallery")
  51.     
  52.     TitleLongName$ = "Top Low Investment Businesses of the 90s"
  53.         
  54.     '' Set the following variable to the name of the MVB file, without 
  55.     '' the filename extension (for example, "GALLERY")
  56.         
  57.     MVB$ = "EASYINV\EASYINV"
  58.     CISEXE$ = "CSDEMO\GOSETUP"
  59.     CATMVB$ = "CATALOG\ALLEGRO"
  60.                 
  61.     '' The following variable determines whether Setup prompts the user
  62.     '' to specify a directory in which to install title files. (Files
  63.     '' to be installed on the hard disk must be listed in the TITLE.INF 
  64.     '' file under the [Installed Title Files] section.) Specify one of
  65.     '' the following values:
  66.     ''
  67.     '' 0    Install title files in the Windows directory (default setting).
  68.     ''      This is an appropriate setting if you have a limited number
  69.     ''      of files to copy (for example, a single custom icon or DLL).
  70.     ''
  71.     '' 1    Display a dialog box to prompt the user for a directory in 
  72.     ''      which to install files
  73.         
  74.     PromptForPath% = 0
  75.         
  76.     '' If you have specified 1 in PromptForPath%, set the following 
  77.     '' variable to the default path that will be displayed in the dialog
  78.     '' box (for example, "C:\GALLERY").
  79.         
  80.     DefaultPath$ = ""
  81.     
  82.     '' Set the following variable to the name of the program manager 
  83.     '' group you would like to create (for example, "Viewer 2.0 Gallery")
  84.         
  85.     ProgManGroup$ = "Allegro Reference"
  86.     
  87.     '' Set the following variable to the caption of the program manager 
  88.     '' item for your title (for example, "Gallery")
  89.         
  90.     ProgManItem$ = "Top Low Investment"
  91.     CISProgManItem$ = "Compuserve Demo"
  92.     CatProgManItem$ = "Allegro New Media Catalog 95"
  93.     
  94.     '***********************************************************************
  95.     '** Mainline
  96.     '***********************************************************************
  97.  
  98.     GLOBAL CUIDLL$
  99.  
  100.     '' Include files
  101.     '$INCLUDE 'setupapi.inc'
  102.     
  103.     '' Custom UI dll
  104.     CUIDLL$ = "mscuistf.dll"
  105.     
  106.     '' Dialog ID's
  107.     CONST DESTPATH      = 1000
  108.     CONST APPHELP       = 2000
  109.     CONST TOOBIG        = 3000
  110.     CONST BADPATH       = 4000
  111.     CONST SUCCESS       = 5000
  112.     
  113.     '' Bitmap ID
  114.     CONST LOGO = 1
  115.     
  116.     '' Functions and subroutines
  117.     DECLARE FUNCTION AddFont LIB "mscuistf.dll" (szFont$, szName$) AS INTEGER
  118.     DECLARE FUNCTION MakePath (szDir$, szFile$) AS STRING
  119.     DECLARE FUNCTION GetTitleDir (szDefault$) AS STRING
  120.     DECLARE FUNCTION CopyFiles(szTitleDir$) AS INTEGER
  121.     DECLARE SUB RegisterFont(fontfile$, fontname$)
  122.     DECLARE SUB ModifyViewerIni
  123.     DECLARE SUB RegisterCustomFonts
  124.     DECLARE SUB ModifyProgramManager
  125.     DECLARE SUB ShowSuccess
  126.     DECLARE SUB RegisterDrivers
  127.     
  128.     '' The following statement turns size checking off. Set it to scmOnFatal 
  129.     '' to enable size checking, where Setup will compare the disk file size 
  130.     '' with the INF file size and report an error if they are not the same.
  131.     
  132.     i% = SetSizeCheckMode(scmOff)
  133.     
  134.     '' Set the title and banner bitmap. You must rebuild MSCUISTF.DLL to 
  135.     '' alter the banner bitmap.
  136.     
  137.     SetTitle "Entrepreneur Setup"
  138.     SetBitmap CUIDLL$, LOGO 
  139.     
  140.     '' Read in the INF file.
  141.     
  142.     ReadInfFile GetSymbolValue("STF_CWDDIR") + "TITLE.INF"
  143.     
  144.     '' Decide where to put title files
  145.     IF PromptForPath% = 1 THEN
  146.         szTitleDir$ = GetTitleDir(DefaultPath$)
  147.         IF szTitleDir$ = "" THEN
  148.             GOTO QUIT
  149.         ENDIF
  150.     ELSE
  151.         szTitleDir$ = GetWindowsDir()
  152.     ENDIF   
  153.     
  154.     '' Copy files
  155.     IF CopyFiles(szTitleDir$) = 0 THEN
  156.         GOTO QUIT
  157.     ENDIF
  158.  
  159.     '' Create the MVIEWER2.EXE MVB association 
  160.     CreateIniKeyValue "WIN.INI", "Extensions", "MVB", "mviewer2.exe", cmoNone
  161.  
  162.     '' Register in VIEWER.INI
  163.     ModifyViewerIni
  164.  
  165.     '' Register custom fonts
  166.     RegisterCustomFonts
  167.  
  168.     '' Register drivers
  169.     RegisterDrivers
  170.     
  171.     '' Modify Program Manager
  172.     ModifyProgramManager    
  173.     
  174.     '' Success dialog
  175.     ShowSuccess
  176.     
  177.     RUN MakePath(GetSymbolValue("STF_SRCDIR"),"rstwin.exe Allegro Restart "),NOWAIT   
  178.     '' Now start the title
  179.  
  180.     '' RUN "mviewer2.exe " + MVB$ + ".MVB", NOWAIT
  181.  
  182. QUIT:
  183.     
  184.     END
  185.     
  186.  
  187. '*************************************************************************
  188. '** Purpose:
  189. '**     Prompts the user for a path for the title files
  190. '** Arguments:
  191. '**     szDefault$ - default path
  192. '** Returns:
  193. '**     New valid path name, or "" if the user quit.
  194. '*************************************************************************
  195.  
  196. FUNCTION GetTitleDir (szDefault$) STATIC AS STRING
  197.  
  198.     SetSymbolValue "String", TitleShortName$
  199.     SetSymbolValue "EditTextIn", szDefault$
  200.     SetSymbolValue "EditFocus", "ALL"
  201.  
  202.     GETPATH:
  203.  
  204.     sz$ = UIStartDlg(CUIDLL$, DESTPATH, "FEditDlgProc", APPHELP, "FHelpDlgProc")
  205.  
  206.     IF sz$ = "CONTINUE" THEN
  207.         szTitleDir$ = GetSymbolValue("EditTextOut")
  208.         IF IsDirWritable(szTitleDir$) = 0 THEN
  209.  
  210.             BADPATH:
  211.  
  212.             sz$ = UIStartDlg(CUIDLL$, BADPATH, "FInfoDlgProc", 0, "")
  213.             IF sz$ = "REACTIVATE" THEN
  214.                 GOTO BADPATH
  215.             END IF
  216.             UIPop 1
  217.             GOTO GETPATH
  218.         END IF
  219.         UIPop 1
  220.         CreateDir szTitleDir$, cmoNone
  221.  
  222.     ELSEIF sz$ = "REACTIVATE" THEN
  223.         GOTO GETPATH
  224.  
  225.     ELSE
  226.         szTitleDir$ = ""
  227.  
  228.     END IF
  229.  
  230.     GetTitleDir = szTitleDir$
  231.  
  232. END FUNCTION
  233.  
  234.  
  235. '*************************************************************************
  236. '** Purpose:
  237. '**     Copies the files in the INF file
  238. '** Arguments:
  239. '**     szTitleDir$ - destination directory for the title files
  240. '** Returns
  241. '**     1 if files were copied, 0 otherwise
  242. '*************************************************************************
  243.  
  244. FUNCTION CopyFiles(szTitleDir$) STATIC AS INTEGER
  245.  
  246.     '' Add all system files to the copy list
  247.     AddSectionFilesToCopyList "System Files", GetSymbolValue("STF_SRCDIR"), GetWindowsSysDir()
  248.     
  249.     '' Add all of the title files to the copy list
  250.     AddSectionFilesToCopyList "Installed Title Files", GetSymbolValue("STF_SRCDIR"), szTitleDir$
  251.     
  252.     '' Check size
  253.     szExtras$ = "Extra"
  254.     szCosts$ = "Costs"
  255.     szNeededs$ = "Neededs"
  256.     FOR i% = 1 TO 26 STEP 1
  257.         AddListItem szExtras$, "0"
  258.     NEXT i%
  259.     
  260.     '' We assume that VIEWER.INI will take another 4K
  261.     ReplaceListItem szExtras$, ASC(MID$(UCASE$ (GetWindowsDir()), 1, 1)) -ASC("A") + 1, STR$(4096)
  262.     '' Get amount of space required
  263.     StillNeed& = GetCopyListCost(szExtras$, szCosts$, szNeededs$)
  264.     
  265.     '' Put up a message if there is not enough space
  266.     FOR i% = 1 TO 26 STEP 1
  267.         IF VAL(GetListItem(szNeededs$, i%)) > 0 THEN
  268.     
  269.             SetSymbolValue "String1", LTRIM$(STR$(VAL(GetListItem(szCosts$, i%)) / 1024))
  270.             SetSymbolValue "String2", CHR$(i% - 1 + ASC("A"))
  271.     
  272.             TOOBIG:
  273.     
  274.             sz$ = UIStartDlg(CUIDLL$, TOOBIG, "FInfoDlgProc", 0, "")
  275.             IF sz$ = "REACTIVATE" THEN
  276.                 GOTO TOOBIG
  277.             END IF
  278.             UIPop 1
  279.             CopyFiles = 0
  280.             GOTO DONTCOPY
  281.         END IF
  282.     NEXT i%
  283.     
  284.     '' Copy the files
  285.     CopyFilesInCopyList
  286.     
  287.     CopyFiles = 1
  288.  
  289. DONTCOPY:
  290.  
  291. END FUNCTION
  292.  
  293.  
  294. '*************************************************************************
  295. '** Purpose:
  296. '**     Puts up a success dialog
  297. '*************************************************************************
  298.  
  299.  SUB ShowSuccess STATIC
  300.  
  301.     SUCCESS:
  302.     
  303.     SetSymbolValue "String1", TitleShortName$
  304.     sz$ = UIStartDlg(CUIDLL$, SUCCESS, "FInfoDlgProc", 0, "")
  305.     IF sz$ = "REACTIVATE" THEN
  306.         GOTO SUCCESS
  307.     END IF
  308.     UIPop 1
  309.     
  310. END SUB
  311.  
  312.  
  313. '*************************************************************************
  314. '** Purpose:
  315. '**     Appends a file name to the end of a directory path,
  316. '**     inserting a backslash character as needed.
  317. '** Arguments:
  318. '**     szDir$  - full directory path (with optional ending "\")
  319. '**     szFile$ - filename to append to directory
  320. '** Returns:
  321. '**     Resulting fully qualified path name.
  322. '*************************************************************************
  323.  
  324. FUNCTION MakePath (szDir$, szFile$) STATIC AS STRING
  325.     IF szDir$ = "" THEN
  326.         MakePath = szFile$
  327.     ELSEIF szFile$ = "" THEN
  328.         MakePath = szDir$
  329.     ELSEIF MID$(szDir$, LEN(szDir$), 1) = "\" THEN
  330.         MakePath = szDir$ + szFile$
  331.     ELSE
  332.         MakePath = szDir$ + "\" + szFile$
  333.     END IF
  334. END FUNCTION
  335.  
  336.  
  337. '*************************************************************************
  338. '** Purpose:
  339. '**     Registers a font.
  340. '** Arguments:
  341. '**     fontfile$ - font filename
  342. '**     fontname$ - font name.
  343. '*************************************************************************
  344.  
  345. SUB RegisterFont(fontfile$, fontname$) STATIC
  346.  
  347.     '' A simple error catching wrapper around AddFont, which is a 'C' routine in MSCUISTF.DLL
  348.  
  349.     IF AddFont(fontfile$, fontname$) = -1 THEN
  350.         j% = DoMsgBox("Could not install " + fontfile$ + " font.", "Viewer Font Installation", 0)
  351.     ENDIF
  352.  
  353. END SUB
  354.  
  355.  
  356. '*************************************************************************
  357. '** Purpose:
  358. '**     Registers title in VIEWER.INI
  359. '*************************************************************************
  360.  
  361. SUB ModifyViewerIni STATIC
  362.  
  363.     '' Get the VIEWER.INI file
  364.     
  365.     szIni$ = MakePath(GetWindowsDir(), "VIEWER.INI")
  366.  
  367.     '' First register the title file, setting the Name and Path entries. 
  368.     '' We assume that the MVB file is the same directory as SETUP.EXE.
  369.     ''
  370.     '' CUSTOMIZATION: If you're installing multiple MVB files, copy the
  371.     '' following two statements for each additional file, substituting
  372.     '' the appropriate long name and MVB filename for the TitleLongName$
  373.     '' and MVB$ variables.
  374.     
  375.     CreateIniKeyValue szIni$, MVB$, "Name", TitleLongName$, cmoOverwrite
  376.     CreateIniKeyValue szIni$, MVB$, "Path", GetSymbolValue("STF_SRCDIR"), cmoOverwrite
  377.     
  378.     '' Now we have to register the MVB file in the [FILES] section, so 
  379.     '' Viewer can find files that are not on the path and display a 
  380.     '' special message when a file is not found.
  381.  
  382.     CreateIniKeyValue szIni$, "FILES", MVB$ + ".MVB", GetSymbolValue("STF_SRCDIR") + "," + "Please insert the " + TitleLongName$ + " disk.", cmoOverwrite
  383.  
  384.     '' CUSTOMIZATION: If you're installing a Help title or any custom DLLs,
  385.     '' you should copy the preceding statement for each extra title or DLL.
  386.     ''
  387.     '' Example for installing an extra title:
  388.     ''
  389.     ''    CreateIniKeyValue szIni$, "FILES", "GALHELP.MVB", GetSymbolValue("STF_SRCDIR") + "," + "Please insert the Viewer 2.0 Gallery disk.", cmoOverwrite
  390.     ''
  391.     '' Example for installing a custom DLL:
  392.     ''
  393.     ''    CreateIniKeyValue szIni$, "FILES", "GALLERY.DLL", GetSymbolValue("STF_SRCDIR") + "," + "A required file is missing. Please reinstall the Viewer Gallery.", cmoOverwrite
  394.  
  395. END SUB
  396.  
  397.  
  398. '*************************************************************************
  399. '** Purpose:
  400. '**     Creates program manager entries for the title
  401. '*************************************************************************
  402.  
  403. SUB ModifyProgramManager STATIC
  404.  
  405.     '' Create the program manager group
  406.  
  407.     CreateProgmanGroup ProgmanGroup$, "", cmoNone
  408.     ShowProgmanGroup ProgmanGroup$, 1, cmoNone
  409.     
  410.     '' Create an entry for the title
  411.      
  412.     CreateProgmanItem ProgmanGroup$, ProgmanItem$, "mviewer2.exe " + MakePath(GetSymbolValue("STF_SRCDIR"), MVB$ + ".MVB"), MakePath(GetSymbolValue("STF_SRCDIR"), "STARTUP.ICO") + ",0,0,0," + GetSymbolValue("STF_SRCDIR") + "EASYINV", cmoOverwrite
  413.     CreateProgmanItem ProgmanGroup$, CatProgmanItem$, MakePath(GetSymbolValue("STF_SRCDIR"), CATMVB$ + ".EXE"), MakePath(GetSymbolValue("STF_SRCDIR"), "CATALOG.ICO") + ",0,0,0," + GetSymbolValue("STF_SRCDIR") + "", cmoOverwrite
  414.     CreateProgmanItem ProgmanGroup$, "Read Me: Entrepreneur", "notepad.exe " + GetSymbolValue("STF_SRCDIR") + "readme.txt", "", cmoOverwrite
  415.     CreateProgmanItem ProgmanGroup$, "Compuserve Demo", "" + MakePath(GetSymbolValue("STF_SRCDIR"), CISEXE$ + ".EXE"), MakePath(GetSymbolValue("STF_SRCDIR"), "CIMPREV.ICO") + ",0,0,0," + GetSymbolValue("STF_SRCDIR") + "", cmoOverwrite
  416.  
  417. '' CUSTOMIZATION: 
  418.     ''
  419.     '' To create additional Program Manager items, copy the preceding 
  420.     '' statement for each additional item, substituting the appropriate
  421.     '' name for the MVB$ variable.
  422.     ''
  423.     '' To display a custom icon with the Program Manager item, specify
  424.     '' the icon filename with the fourth parameter (this parameter is 
  425.     '' currently an empty string, ""). The following example specifies 
  426.     '' an icon with the same filename as the .MVB file:
  427.     ''
  428.     ''        CreateProgmanItem ProgmanGroup$, ProgmanItem$, "mviewer2.exe " + MakePath(GetSymbolValue("STF_SRCDIR"), MVB$ + ".MVB"), MakePath(GetSymbolValue("STF_SRCDIR"), MVB$ + ".ICO"), cmoOverwrite
  429.  
  430. END SUB
  431.  
  432.  
  433. '*************************************************************************
  434. '** Purpose:
  435. '**     Registers custom fonts with Windows.
  436. '*************************************************************************
  437.  
  438. SUB RegisterCustomFonts STATIC
  439.  
  440.     '' CUSTOMIZATION: If you install custom fonts, then add statements
  441.     '' in this routine to register the fonts with the current Windows 
  442.     '' session and to add them to the WIN.INI [Fonts] section. 
  443.     ''
  444.     '' Note that TrueType fonts can only be installed in Windows 3.1.
  445.     '' RegisterFont automatically creates the required .FOT file for 
  446.     '' TrueType fonts.
  447.     ''    
  448.     '' The following example registers a font residing in MISTRAL.TTF
  449.     '' and installs the font with the name Mistral (True Type):
  450.     '' 
  451.     ''     RegisterFont "mistral.ttf", "Mistral (TrueType)"
  452.     ''
  453.  
  454. END SUB
  455.  
  456.  
  457. '*************************************************************************
  458. '** Purpose:
  459. '**     Registers Windows drivers
  460. '*************************************************************************
  461.  
  462. SUB RegisterDrivers STATIC
  463.  
  464. '' CUSTOMIZATION: Video for Windows is not a standard component of
  465. '' Windows 3.1. If your title uses video, proceed as follows.
  466. ''
  467. '' 1) Add the following files to the [System Files] section of the INF file:
  468. ''
  469. ''    dispdib.dll
  470. ''    msvideo.dll
  471. ''    indeo.drv
  472. ''    mciavi.drv
  473. ''    msvidc.drv
  474. ''
  475. '' 2) Add the above files to your release directory. US versions can be 
  476. ''    found in the \SYSTEM subdirectory of your Viewer disc. French and
  477. ''    German versions were not available at ship time. Please contact 
  478. ''    Microsoft or check the Multimedia Viewer section on the Microsoft
  479. ''    Compuserve Forum for further details.
  480. ''
  481. '' 3) Uncomment the following lines:
  482. ''
  483. CreateIniKeyValue "WIN.INI", "mci extensions", "AVI", "AVIVIDEO", cmoNone
  484. CreateIniKeyValue MakePath(GetWindowsDir(), "SYSTEM.INI"), "mci", "AVIVIDEO", "MCIAVI.DRV", cmoNone
  485. CreateIniKeyValue MakePath(GetWindowsDir(), "SYSTEM.INI"), "drivers", "vidc.msvc", "msvidc.drv", cmoNone
  486. CreateIniKeyValue MakePath(GetWindowsDir(), "SYSTEM.INI"), "drivers", "vidc.rt21", "indeo.drv", cmoNone
  487. CreateIniKeyValue MakePath(GetWindowsDir(), "SYSTEM.INI"), "drivers", "VIDC.IV31", "ir32.dll", cmoNone
  488. CreateIniKeyValue MakePath(GetWindowsDir(), "SYSTEM.INI"), "drivers", "VIDC.IV32", "ir32.dll", cmoNone
  489.  
  490. END SUB
  491.  
  492.  
  493.  
  494.